Web Application Home Button

ABSTRACT

Various embodiments provide a mechanism to allow end users to install web applications and websites onto their desktop. In accordance with one or more embodiments, client-side code can be utilized to allow developers associated with a website to define boundaries associated with user interaction, and have those boundaries enforced by a run-time engine. In at least some embodiments, developers can provide, through JavaScript code and/or HTML markup, various configurations for the creation of a start menu shortcut, navigation, and so-called jumplist integration.

RELATED APPLICATION

This application is a continuation of and claims priority to U.S. patentapplication Ser. No. 12/814,359 filed Jun. 11, 2010, the disclosure ofwhich is incorporated by reference herein in its entirety.

BACKGROUND

More recently, industry has begun to focus on the notion of integratingweb applications or websites with a user's computer desktop environmentor “desktop”. There are, however, challenges associated with doing so.For example, today it is difficult for websites to define the boundariesof their sites for the purpose of desktop integration. Thus, end-usersare left to define the boundaries through client-side script that theydevelop themselves. This can be problematic because an end-user may notnecessarily know how a particular web site is constructed. For example,the end user may not necessarily know all of the links, relationshipsbetween web properties, or other nuances employed by a website toprovide functionality to the user. Accordingly, the end-user's scriptmay not appreciate these links or nuances and, hence, can lead to anundesirable or broken user experience.

In addition, users today face what is known as a dual boot problem.Specifically, users are forced to boot their personal computers, starttheir browsers, and finally launch a particular web application thatthey wish to work within. This problem is compounded by the fact thatbrowsers can provide too many distractions for users, such as those thatappear in a browser's chrome, and do not allow the users to simplyconcentrate on a particular task at hand associated with a webapplication.

SUMMARY

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

Various embodiments provide a mechanism to allow end users to installweb applications and websites onto a client device, such as a clientdevice desktop. In accordance with one or more embodiments, client-sidecode can be utilized to allow developers associated with a website todefine boundaries associated with user interaction, and have thoseboundaries enforced by a run-time engine. In at least some embodiments,developers can provide, through JavaScript code, various configurationsfor the creation of a start menu shortcut, navigation, and so-calledjumplist integration, as well as a number of other features.

BRIEF DESCRIPTION OF THE DRAWINGS

The same numbers are used throughout the drawings to reference likefeatures.

FIG. 1 illustrates an operating environment in which various principlesdescribed herein can be employed in accordance with one or moreembodiments.

FIG. 2 illustrates a web application window in accordance with one ormore embodiments.

FIG. 3 illustrates a JavaScript API in accordance with one or moreembodiments.

FIG. 4 is a flow diagram that describes steps in an installation methodin accordance with one or more embodiments.

FIG. 5 is a flow diagram that describes steps in a web applicationinteraction method in accordance with one or more embodiments.

FIG. 6 illustrates a portion of a client desktop in accordance with oneor more embodiments.

FIG. 7 illustrates a JavaScript API in accordance with one or moreembodiments.

FIG. 8 illustrates dynamic interaction between a website and a customjumplist in accordance with one or more embodiments.

FIG. 9 illustrates a portion of a client desktop in accordance with oneor more embodiments.

FIG. 10 illustrates a portion of a client desktop in accordance with oneor more embodiments.

FIG. 11 is a flow diagram that describes steps in an installation methodin accordance with one or more embodiments.

FIG. 12 is a flow diagram that describes steps of a method in accordancewith one or more embodiments.

FIG. 13 is a flow diagram that describes steps in a method in accordancewith one or more embodiments.

FIG. 14 illustrates a client desktop in accordance with one or moreembodiments.

FIG. 15 diagrammatically illustrates a drag and a drop operation inaccordance with one or more embodiments.

FIG. 16 is a flow diagram that describes steps in an installation methodin accordance with one or more embodiments.

FIG. 17 illustrates a client desktop in accordance with one or moreembodiments.

FIG. 18 is a flow diagram that describes steps in an installation methodin accordance with one or more embodiments.

FIG. 19 illustrates a client desktop in accordance with one or moreembodiments.

FIG. 20 is a flow diagram that describes steps in a method in accordancewith one or more embodiments.

FIG. 21 illustrates a client desktop in accordance with one or moreembodiments.

FIG. 22 illustrates a relationship between a browser displaying awebsite, a credentials store, an associated web application, and a webapplication credentials store, in accordance with one or moreembodiments.

FIG. 23 is a flow diagram that describes steps in a method in accordancewith one or more embodiments.

FIG. 24 is a flow diagram that describes steps in a method in accordancewith one or more embodiments.

FIG. 25 illustrates an example of multiple web application instances inaccordance with one or more embodiments.

FIG. 26 illustrates a client desktop in accordance with one or moreembodiments.

FIG. 27 is a flow diagram that describes steps in a method in accordancewith one or more embodiments.

FIG. 28 is a flow diagram that describes steps in a method in accordancewith one or more embodiments.

FIG. 29 illustrates a client desktop in accordance with one or moreembodiments.

FIG. 30 illustrates a client desktop in accordance with one or moreembodiments.

FIG. 31 illustrates a client desktop in accordance with one or moreembodiments.

FIG. 32 is a flow diagram that describes steps in a method in accordancewith one or more embodiments.

FIG. 33 is a flow diagram that describes steps in a method in accordancewith one or more embodiments.

FIG. 34 is a flow diagram that describes steps in a method in accordancewith one or more embodiments.

FIG. 35 illustrates a relationship between a web application and abrowser in accordance with one or more embodiments.

FIG. 36 is a flow diagram that describes steps in a method in accordancewith one or more embodiments.

FIG. 37 is a flow diagram that describes steps in a method in accordancewith one or more embodiments.

FIG. 38 illustrates an example of a transient web application inaccordance with one or more embodiments.

FIG. 39 illustrates a site mode browser in accordance with one or moreembodiments.

FIG. 40 is a flow diagram that describes steps in a method in accordancewith one or more embodiments.

FIG. 41 illustrates an example system that can be utilized to implementone or more embodiments.

DETAILED DESCRIPTION

Overview

Various embodiments provide a mechanism to allow end users to installweb applications and websites onto a client device, such as a clientdevice desktop. In accordance with one or more embodiments, client-sidecode can be utilized to allow developers associated with a website todefine boundaries associated with user interaction, and have thoseboundaries enforced by a run-time engine. In at least some embodiments,developers can provide, through JavaScript code, various configurationsfor the creation of a start menu shortcut, navigation, and so-calledjumplist integration, as well as other features.

Boundaries can be thought of as a developer-defined experience thatrelates to how functionality is exposed to an end-user. Boundaries areassociated with website domains, such as top-level domains andsub-domains that might be associated with separate applications, or asubset of websites that are hosted on a domain. Hence, the boundariescan be defined by a set of domains, sub-domains, folders, sub-sites,protocols, hosts, paths, and the like, that are utilized to make aparticular web application work.

In one or more embodiments, websites can opt into the functionalitydescribed above and below. In this case, developers can provide codewhich, in some instances is expressed in JavaScript, which defines theboundaries of the user's experience with their website. Alternately oradditionally, websites that do not opt into the functionality describedabove and below can have a default experience provided for them.

In the discussion that follows, a section entitled “OperatingEnvironment” is provided and describes one environment in which one ormore embodiments can be employed. Following this, a section entitled“Integration Infrastructure” describes infrastructure that enables webapplications to be integrated onto a client device in accordance withone or more embodiments. Next, a section entitled “Jumplist Integration”describes how so-called jumplists can be integrated in accordance withone or more embodiments. Next, a section entitled “Taskbar Pinning”describes how web applications can be pinned to a taskbar in accordancewith one or more embodiments. Following this, a section entitled“Associating Credentials and Login Sessions” describes how credentialsand login sessions can be associated in accordance with one or moreembodiments. Next, a section entitled “Creating and Launching a WebApplication with Associated Credentials” describes how a web applicationcan be created and launched in accordance with one or more embodiments.Following this, a section entitled “Web Application Task Sessions”describes the notion of task sessions in accordance with one or moreembodiments. Next, a section entitled “Transitioning Between a WebApplication and a Browser” describes how transitions can occur between aweb application and a browser in accordance with one or moreembodiments. Following this, a section entitled “Creating a TransientWeb Application from a Browser” describes how a transient webapplication can be created from a browser in accordance with one or moreembodiments. Next, a section entitled “Converting a Transient WebApplication into an Installed Web Application” describes how a transientweb application can be converted into an installed web application inaccordance with one or more embodiments. Following this, a sectionentitled “Web Application Super Home Button” describes a home buttonassociated with a web application in accordance with one or moreembodiments. Last, a section entitled “Example System” describes anexample system that can be utilized to implement one or moreembodiments.

Consider now an example operating environment in which one or moreembodiments can be implemented.

Operating Environment

FIG. 1 illustrates an operating environment in accordance with one ormore embodiments, generally at 100. Environment 100 includes a computingdevice 102 having one or more processors 104, one or morecomputer-readable storage media 106 and one or more applications 108that reside on the computer-readable storage media and which areexecutable by the processor(s). The computer-readable storage media caninclude, by way of example and not limitation, all forms of volatile andnon-volatile memory and/or storage media that are typically associatedwith a computing device. Such media can include ROM, RAM, flash memory,hard disk, removable media and the like. One specific example of acomputing device is shown and described below in FIG. 41.

In addition, computing device 102 includes a software application in theform of a web browser 110. Any suitable web browser can be used examplesof which are available from the assignee of this document and others. Inaddition, computer-readable storage media 106 can include a webapplication mode browser 111 that operates as described above and below.The web application mode browser 111 serves as a runtime engine thatreceives and makes API calls from and to websites respectively, overseesweb application installation processes, enforces boundaries, and enablesfunctionality as described above and below. In operation, the webapplication mode browser is a pared down version of a full browser, withmany of the normal browser functionalities turned off. In someinstances, the web application mode browser can be thought of as a“chrome-less” browser that does not include many of the usual browsercontrols. Some commands may, however, be exposed through a miniaturecontrol bar. The web application mode browser thus removes many of thedistractions for a user and permits a directed, website-defined userexperience in which the websites can control how the user interacts withtheir web application.

In operation, the web application mode browser can be considered toreside logically between a website and the client device's operatingsystem. Thus, the web application mode browser receives calls fromwebsites and can, responsively, make operating system calls to affectthe functionality described herein. Likewise, the web application modebrowser can receive calls from the operating system, that will affectthe functionality of the website. For example, the operating systemexposes APIs that enable interaction with a desktop's task bar. The webapplication mode browser can receive calls from a website and,responsively, can make API calls that enable task bar functionality aswill become apparent below.

Web application mode browser 111 can be implemented as a standalonecomponent. Alternately or additionally, the web application mode browser111 can be implemented as part of applications 108 and/or browser 110.

In addition, environment 100 includes a network 112, such as theInternet, and one or more web sites 114 from and to which content can bereceived and sent. Such content can include content, such as webapplications, that is integrated onto the client desktop or otherwiseuseable through the client device, as described above and below.

Computing device 102 can be embodied as any suitable computing devicesuch as, by way of example and not limitation, a desktop computer, aportable computer, a handheld computer such as a personal digitalassistant (PDA), cell phone, and the like.

Having described an example operating environment, consider now adiscussion of infrastructure that allows web applications to beintegrated onto a client device.

Integration Infrastructure

In accordance with one or more embodiments, websites can opt into domainnavigation that is provided as part of a more general “site mode”experience. Domain navigation enables websites to customize the behaviorof their existing websites when users access links inside and outside ofspecific domains. When accessing links inside developer-specifiedboundaries, content can be rendered and consumed within a webapplication window that is rendered by the web application mode browseras part of an associated web application. When accessing links outsideof the developer-specified boundaries, associated content can berendered and consumed inside of a default browser that is outside of theweb application mode browser. This allows a website to define whatdomains should be treated as an extension of the website, and whichshould not.

In one or more embodiments, navigation domains can be defined by webdevelopers and identify links whose content is displayed by the webapplication mode browser as part of the integrated website, or outsideof the web application mode browser in the default browser. In addition,default domain parameters can be defined that are used to associate acollection of web application pages together.

As an example, consider the following in-line domain page definition:

-   -   contoso.crm.dynamics.com\*;*.microsoft.com\*;

This domain page definition will allow URIs of the form just below to bedisplayed in the same desktop web application window:

sales.contoso.crm.dynamics.com\*

hr.contoso.crm.dynamics\*

*.microsoft.com\crm\

Likewise, this domain page definition will force other URIs to bedisplayed outside of the desktop web application window, even if thelink references are inside a page within the desktop web applicationwindow:

www.bing.com

home.live.com

In the above domain page definition, wild cards are utilized inside theweb application installation API. This API is typically called by thewebsite when the user selects a website integration link provided by thewebsite. This API can populate a web application file or “.webapp” filewith information and content in the desktop, task bar, or start menu, orany other suitable location that will be used to launch a websiteshortcut. It is to be appreciated and understood that any suitable fileextension can be used to designate a web application file. Thenavigation domains and other boundary information are stored within the.webapp file.

When the .webapp file is launched, navigation domains therewithin areenforced by the web application mode browser 111. Links selected by theuser or accessed by the website continue to execute inside the webapplication window as long as they match the wildcard domains. However,when a website is detected that is outside of the defined navigationdomains, a default browser is instantiated or otherwise used, andcontent associated with the website is displayed outside of the webapplication window and inside the default browser.

As an example, consider FIG. 2, which illustrates a web applicationwindow 200 having a navigation domain set of a.com (202), b.com (204)and d.com (206), which implies that all pages from these domains aredisplayed inside the web application window 200. When pages from c.com(208) or e.com (210) are accessed from within the web application window200, they are displayed in the default browser window and not in the webapplication window 200.

FIG. 3 illustrates a JavaScript API in accordance with one or moreembodiments at 300. The illustrated JavaScript API enables a website tointegrate a web application with a client desktop. The API defines thenavigation domains that will be enforced by the web application orrun-time engine. In this example, the navigation domains are describedusing wild-card expressions as illustrated above. This API enablespopulation or updating of a .webapp application file 302 with contentand information on the client device and stores the navigation domainsand other information in it. These navigation domains are enforced whenthe web application is launched.

In the illustrated and described embodiment, .webapp application file302 includes information that the website has defined for its site modeconfiguration. This information includes a start URL which is theinitial page that is displayed by the web application mode browser, allof the navigation domains that the website has specified, a webapplication title, and a so-called favicon. Other information can beincluded, as will be described below.

Now, once the web application is launched on client side, the webapplication mode browser reads the web application file and enforces theboundaries defined therein. As noted above, because the web applicationexperience is defined by developers who are knowledgeable of aparticular website and its nuances, a complete and integrated userexperience can be provided.

FIG. 4 is a flow diagram that describes steps in an installation methodin accordance with one or more embodiments. The method can be performedby any suitable hardware, software, firmware, or combination thereof. Inat least some embodiments, aspects of the method are performed bysoftware executing on a client device.

Step 400 selects a website integration feature. The step can beperformed in any suitable way. Typically, the step is performed when auser selects an instrumentality or otherwise takes an action to initiatea web application installation process. For example, a user might selecta link that enables him to integrate the web application. Specificexamples of how this can be done are provided below.

Step 402 creates, on the client device, a web application file—heredesignated “.webapp” file. This file, as initially created, canconstitute an artifact or shell that can subsequently be populated withcontent and information received from or on behalf of the website. Step404 populates the web application file with web application content.This step can be performed in any suitable way. For example, this stepcan be performed through the use of a JavaScript API examples of whichare provided above and below. Alternately or additionally, this step canbe performed through the use of markup, such as HTML.

Having created the web application file on the client and populated itwith content, the web application can now be launched and interactedwith.

FIG. 5 is a flow diagram that describes steps in a web applicationinteraction method in accordance with one or more embodiments. Themethod can be performed by any suitable hardware, software, firmware, orcombination thereof. In at least some embodiments, aspects of the methodare performed by software executing on a client, and software executingat a server supporting a website. Accordingly, one column of the diagramis designated “Client” to designate those steps performed by or at theclient by, for example, a web application mode browser, and one columnis designated “Website” to designate those steps performed by or onbehalf of the website.

Step 500 receives a user selection of a site mode. This step can beperformed in any suitable way. For example, a shortcut installed on theclient desktop can be utilized to receive a site mode selection.Responsive to receiving the site mode selection, step 502 requests astart URL. The start URL can be found in the web application filedescribed above.

Step 504 receives the start URL request. Step 506 returns associated webresources, including content associated with the start URL, to theclient.

Step 508 receives the associated web resources and step 510 renders theweb resources in a web application window. As described above, the webapplication window is rendered by the web application mode browser. Step512 receives a user interaction with respect to the resources renderedin the web application window. The user interaction can include anysuitable type of user interaction. For example, the user interaction mayinclude a navigation activity that originates from within the webapplication window. Step 514 ascertains whether the user interaction iswithin the boundaries defined by the web application file. If the userinteraction is within the boundaries defined by the web applicationfile, step 516 renders content associated with the user interaction inthe web application window. If, on the other hand, the user interactionis not within the boundaries defined by the web application file, step518 renders content associated with the user interaction in a defaultweb browser.

In this manner, boundaries defined by website developers for particularwebsites can be enforced to ensure that the user experience is preservedas desired by the developers. For example, the website defined Start URLis the home page, and subsequent access to the home page in webapplication mode navigates to the Start URL, rather than the user'soriginally defined browser home page. This allows for quick access tothe web application specific page, instead of some unrelated home page.This alleviates end-users from having to define their own site-specificexperiences which may or may not work accurately. As such, a complete,integrated, and intelligently-managed experience can be provided forend-users.

Having described an example installation and interaction experience,consider now the notion of jumplist integration.

Jumplist Integration

In one or more embodiments, developers can enable websites to define aseries of so-called jumplist tasks during desktop integration that canbe used to interact with the websites. In addition, in at least someembodiments websites can create and update custom jumplists.

A jumplist can be thought of as a list that constitutes a set ofrelevant tasks or content that is presented to the user. Throughjumplists, websites can promote a distillation of relevant and usefulinformation to users. Jumplists are related to the capabilities orfunctionalities of a particular web application. For example, a jumplistfor an e-mail application might include tasks that give the user theability to open a contact, create a new e-mail message, and the like. Insome instances, jumplists can include a list of relevant and most-oftenused commands and data.

In one or more embodiments, jumplist functionality can be implemented toinclude both static elements and dynamic elements.

Developers can define the static elements during the web applicationinstallation process that populates the web application file, asdescribed above. Settings associated with the static elements can bestored inside the web application file. In one or more embodiments, thesettings can include a list name and associated tasks. In at least someinstances, the static elements can constitute elements that representcommonly-used functionality.

Settings associated with the dynamic elements can be driven by websitepages that run inside the web application window. These settings includesettings that dynamically expose discernible indicia for a user. Forexample, one setting can add an item to a custom jumplist, and onesetting can display an overlay icon, examples of which are providedbelow. In at least some embodiments, dynamic settings can be clearedeach time the web application is launched and can be configured by webapplication script code.

As an example of a custom jumplist in accordance with one embodiment,consider FIG. 6, which illustrates a portion of a client desktopgenerally at 600. A custom jumplist 602 is exposed in accordance withone or more embodiments. Here, static elements are illustrated at 604and dynamic elements are illustrated at 606. In this example, the staticelements list name is “Tasks” and the tasks or static elements include“New E-mail Message”, “New Appointment”, “New Contact”, and “New Task”.The dynamic elements list name is “Today” and the tasks or dynamicelements include, in this example, reminders that are generated from auser's calendar. The dynamic elements are dynamically populated by anassociated website. So, in this example, the dynamic elements or contentare associated with providing notifications to the user, typicallyindependent of a user's action.

As noted above, jumplists can be defined during the desktop integrationprocess. The tasks and the jumplist definition can be stored inside theweb application file. As an example, consider FIG. 7 which illustrates aJavaScript API in accordance with one or more embodiments at 700. Theillustrated JavaScript API enables a website to integrate with a clientdesktop and to define a jumplist. This JavaScript API can be the same asor similar to the one described with respect to FIG. 3, except for thepresence of “custom task” and “customJumpList.” For brevity, some of theFIG. 3 content has been omitted. In at least some embodiments, initialcreation of a static list of jumplist tasks can be defined by markup,e.g. using HTML tags, that are defined inside an HTML document.

For example, consider the example just below that uses meta tags todescribe the static list functionality:

  <META name=″msapplication-task″content=″name=Task;uri=http://marap/test3.html; icon-uri=http://marap/icon3.ico″/>

When a task is executed, in one or more embodiments, there are a coupleoptions. For example, the URL associated with the task can be openedinside the same web application/browser window that contains thecurrently viewed webpage. Alternately or additionally, a new page can belaunched. Alternately or additionally, a new pop-up window can bedisplayed.

After these parameters are defined and read by the system, they can beused when the user installs the web site on their desktop, as by addingit to the Start Menu or pinning it to the task bar as described below.At the same time, in at least some embodiments, there is a set ofdynamic values that can be manipulated by website client code on thejumplist.

“Custom task” is utilized by the website to define static tasks asdescribed above. In this example, the static task is a new messagestatic task. This API creates a .webapp application file 702 on thedesktop and stores the navigation domains (as in the FIG. 3 example) andother information, such as information associated with jumplists.

In the illustrated and described embodiment, .webapp application file702 includes information that the website has defined for its site modeconfiguration. This information includes a start URL, all of thenavigation domains that the website has specified (not specificallyillustrated), a web application title, and a so-called favicon. Otherinformation includes the custom task associated with a new messagementioned above, and a “custom list”. In this example, the custom listelement is a dynamic element that can be dynamically populated by thewebsite when the web application is running on the client. Here, the“friends” designation comprises a header that is associated with dynamiccontent. So, in this instance, the dynamic content is associated withproviding notifications to the user when their friends are online. Here,the custom list is a separate API that does not reside in the webapplication. The custom task, however, resides in the web application.

In operation, items associated with the static elements can bepre-fetched and cached for when the web application is running Itemsassociated with the dynamic elements, on the other hand, can be providedby the website on-the-fly when the web application is running. As animplementation example of how items associated with the dynamic elementscan be provided to the web application on-the-fly, consider FIG. 8.

FIG. 8 illustrates how a website is able to dynamically interact withthe custom jumplist to allow the user to know that a message hasarrived. In this example, JavaScript 800 illustrates how a website cansend updates to a page that is hosted in the web application modebrowser. Client-side code that is executed in the browser is responsiblefor receiving updates, updating the content on screen, and sending arequest to the jumplist to update its list. In this example, the websiteis able to push information to the jumplist to provide a real timeexperience. Here, when a new message is received by the website, e.g.New Message0 and New Message1, a JavaScript call can be made from theweb application to update jumplist 802. In at least some embodiments, anotification can appear in task bar 804 to inform the user that relevantinformation has been received. Notification can appear in any suitablelocation in the task bar and can comprise any suitable type ofnotification. For example, the notification can appear in or around icon806 that is associated with the web application. Alternately oradditionally, the notification can flash so as to catch the user's eye.

As an example, consider FIG. 9. There, a portion of a client desktop isillustrated generally at 900. A task bar 901 includes an icon 902associated with a current web application. Notice here, that an overlayicon 904 has been rendered within icon 902. In this example, a user hasreceived a new message, and the website has called into the webapplication, as described above, to cause overly icon 904 to be renderedwithin icon 902. This provides notification to the user that a newmessage has arrived. Responsive to seeing the overly icon 904, the usercan access jumplist 905 to expose elements 908 which indicates anappointment that is currently happening or about to happen. Notice alsothat elements 906 are exposed as well. JavaScript excerpt 910illustrates one example of code that can be used to update the overlayicon.

Dynamic interaction between the website and a web application can occurin various other ways. For example, in at least some embodiments apreview window can be pushed from the website to the jumplist responsiveto a user's action with respect to the web site. In the illustrated anddescribed embodiment, the preview window is a miniature view provided bythe web site. The preview window can be provided responsive to anysuitable type of user action. For example, in at least some embodiments,a preview window can be pushed from the website to the jumplistresponsive to a mouse hover over a task bar icon associated with the website. Alternately or additionally, a preview window can be provided byplacing a cursor over the web application's task bar icon and leftclicking

As an example, consider FIG. 10. There, a portion of a client desktop isillustrated generally at 1000. A task bar 1001 includes an icon 1002associated with a current web application. Notice here, that the userhas placed their cursor over icon 1002. Responsively, a preview window1004 has been rendered. In operation, responsive to the user's action ofplacing their cursor over the icon, an event is transmitted to the webpage. Responsive to receiving the event, the web page can thendynamically provide the preview, or cause a cached preview window to berendered.

In at least some embodiments, the preview window can also be used by thewebsite to define toolbar buttons and associated behaviors. For example,in the illustrated and described embodiment, the web applicationcomprises a media player application and three toolbar buttons appear ina user interface instrumentality 1006 that is overlaid over previewwindow 1004. The buttons include a pause button, a stop button, and aplay button. In at least some embodiments, the toolbar buttons can beimplemented using client-side code that avoids having to interact with aremote server. For example, individual buttons can be registered for aparticular web page. Each button is configured and assigned an ID. One“listener” is registered for all button events. When a button ispressed, an event is generated and communicated back to the browserwhich then propagates the event to the registered event listener. Theevent contains the button that was pressed. This enables disambiguationbetween buttons.

Implementation Example

In an implementation example, web developers can use the followingJavaScript functions to update a custom list in the jumplist, and toupdate the task bar overlay icon:

List Creation Behavior

This defines a list name that is the title of the custom list. Thisvalue will be displayed as a list header. Optionally, an item listcontaining the name of the item, the URI value for that item, and animage associated with that item can be provided to populate the listinitially. This functionality can be supported when the browser isstarted in the web application mode.

List Update Behavior

A list item value is provided to update a specific list item. The listitem value includes a name for the item, a URI value for that item, andan image associated with the item. This functionality can be supportedwhen the browser is started in the web application mode.

Set Overlay Icon

A URI value is specified that points to the icon that will be used as anoverlay for the existing task bar icon. This functionality can besupported when the browser is started in the web application mode.

Set Preview Image

A URI that points to an image that should be used as the pictorialrepresentation for the taskbar preview image (or thumbbar preview). Thepreview is displayed when the user clicks with the left mouse button onthe taskbar icon.

Clear Overlay Icon

This removes existing overly icons on the task bar icon. Thisfunctionality can be supported when the browser is started in the webapplication mode.

Web developers can use the following JavaScript functions to define andmodify a set of tool bar buttons that are displayed in the task barpreview window of a specific website.

Toolbar Button Installation

A list of button IDs are specified with a tool tip and image URL. Theevent is passed to the website for processing when the user selects atool bar button. The website can then disambiguate between buttonevents. This call is performed at least once when the site mode windowis opened in order for the buttons to be displayed. This functionalityis supported when the browser is started in the web application mode.

Update Image

This identifies the state and visibility of the button ID that isspecified. The states can be enabled or disabled. In at least someembodiments, by default, the buttons are enabled. The view can be eithershow or hide. By default, defined buttons are visible. Thisfunctionality is supported when the browser is started in webapplication mode.

FIG. 11 is a flow diagram that describes steps in an installation methodin accordance with one or more embodiments. The method can be performedby any suitable hardware, software, firmware, or combination thereof. Inat least some embodiments, aspects of the method are performed bysoftware executing on a client device.

Step 1100 selects a website integration feature. The step can beperformed in any suitable way. Typically, the step is performed when auser selects an instrumentality or otherwise takes an action to initiatea web application installation process. For example, a user might selecta link that enables him to integrate the web application. Specificexamples of how this can be done are provided below.

Step 1102 creates, on the client device, a web application file—heredesignated “.webapp” file. This file, as initially created, canconstitute an artifact or shell that can subsequently be populated withcontent and information received from or on behalf of the website. Step1104 populates the web application file with web application contentincluding, in this example, a jumplist. This step can be performed inany suitable way. For example, this step can be performed through theuse of a JavaScript API an example of which is described above.Alternately or additionally, aspects of this step can be performedthrough the use of markup, such as HTML.

Having created and populated the web application file on the client, theweb application can now be launched at any suitable time.

FIG. 12 is a flow diagram that describes steps of a method in accordancewith one or more embodiments. The steps can be executed in connectionwith any suitable hardware, software, firmware, or combination thereof.In at least some embodiments, the method can be performed by softwareexecuting on a client in association with software executing on aserver.

Step 1200 receives a user action associated with a jumplist. Anysuitable user action can be received, examples of which are providedabove. For example, in at least some embodiments, the user action can bereceived with respect to a specifically displayed jumplist or a jumplistthat is not displayed. Alternately or additionally, the user action canbe received with respect to a displayed icon that is associated with aweb application. The icon can be displayed, for example, in a desktoptask bar or any other suitable location. Examples of such actions areprovided above.

Step 1202 presents content associated with the user action. For example,content presented may comprise the jumplist itself. The jumplist can bepresented responsive to any suitable type of user action, examples ofwhich are provided above. The content presented may also comprisecontent other than the jumplist itself. For example, a custom previewwindow can be presented responsive to a user action such as, forexample, left clicking on a task bar icon. For example, a user mightselect to create or compose a new email message.

FIG. 13 is a flow diagram that describes steps in a method in accordancewith one or more embodiments. The method can be performed by anysuitable hardware, software, firmware, or combination thereof. In atleast some embodiments, aspects of the method are performed by softwareexecuting on a client, and software executing at a server supporting awebsite. Accordingly, one column of the diagram is designated “Client”to designate those steps performed by or at the client, and one columnis designated “Website” to designate those steps performed by or onbehalf of the website.

Step 1300 receives information associated with a dynamic jumplist item.Any suitable jumplist item can serve as the basis upon which informationis received, examples of which are provided above. Step 1302 generates anotification and step 1304 transmits the notification to a client deviceexecuting a web application.

Step 1306 receives the notification and step 1308 provides a discerniblenotification for the user. Any suitable type of discernible notificationcan be provided. For example, in at least some embodiments thediscernible notification can be a visually-discernible notification suchas an overlay icon or a flashing web application icon. Alternately oradditionally, the discernible notification can comprise anaudibly-discernible notification such as a bell or buzzer.

Having considered various embodiments associated with jumplistintegration, consider now a discussion of how websites can become“pinned” to a desktop feature, such as a task bar, in accordance withone or more embodiments.

Taskbar Pinning

There are various ways in which a web application can become integratedwith a client desktop or task bar. In at least some embodiments, a webapplication can be integrated with the desktop through a drag and dropoperation. Alternately or additionally, web applications can beintegrated via a web browser's menu selections. Alternately oradditionally, a web application can be integrated by an associatedwebsite itself. Each of these embodiments is discussed under its ownheading below.

Integration Through Drag and Drop Operations

In one or more embodiments, a web application can be integrated with thedesktop or task bar through a drag and drop operation. As an example,consider FIG. 14. There, a client desktop is shown generally at 1400. Aweb browser window 1402 includes an address bar 1404 with a web site URLdisplayed therein. In association with the URL, an icon, termed a“favicon” 1406, is shown. In addition, desktop 1400 includes a task bar1408.

FIG. 15 diagrammatically illustrates a drag and a drop operation inaccordance with one or more embodiments. In this example, a cursor hasbeen placed over favicon 1406. By left clicking on the favicon anddragging it along to task bar 1408, the associated web application—inthis case a message board application—can be pinned to the desktop'stask bar 1408. The drag and drop operation starts the integrationprocess of integrating the web application as described above, thuspinning it to the task bar.

In one or more implementations, if the webpage associated with the webapplication has a tab opened in the browser, after the favicon isdropped on the task bar, the associated tab can disappear from thebrowser's window. Alternately or additionally, the tab might not beremoved but instead the content of the tab might be replaced with a “NewTab” page. In instances in which a single tab is open in a browserwindow, the browser window will disappear after the favicon is pinned tothe task bar. At this point, the tab that contained in the original sitecan be removed before the browser closes but after the web applicationis pinned. In addition, in at least some embodiments, when the dragoperation enters the task bar, a tool tip in the form of “Pin toTaskbar” can be presented to inform the user of the pinningfunctionality.

Further, the state of the website or web application that was pinned tothe task bar can be migrated to a newly-displayed window when the webapplication is instantiated for the first time. This will allow the userto not have to re-enter credentials to the site in order to be able touse the application.

Having pinned a website or web application to the task bar and completedthe installation process as described above, the web application can nowbe launched from the taskbar by simply clicking on the associatedfavicon.

FIG. 16 is a flow diagram that describes steps in an installation methodin accordance with one or more embodiments. The method can be performedby any suitable hardware, software, firmware, or combination thereof. Inat least some embodiments, aspects of the method are performed bysoftware executing on a client

Step 1600 receives an indication of a drag and drop operation associatedwith web application installation. The step can be performed in anysuitable way. In the embodiment described just above, the step isperformed when a user drags and drops an icon such as a favicon,associated with a website, to indicate to the website a desire tointegrate an associated web application with their desktop. For example,a user might drag and drop the favicon to the task bar, quick launcharea or some other location on the desktop, such as the desktop canvass.Step 1602 creates a web application file responsive to the drag and dropoperation. In the illustrated and described embodiment, the webapplication file that is initially created is an artifact or shell thatdoes not yet contain information from the associated web site such asjumplist tasks, start URLs, favicons or other properties such as staticjumplist tasks, an alternate start URL, alternate favicon and the like.These can be added later through new markup and/or JavaScript APIs asdescribed above. It is to be appreciated and understood that techniquesother than those that employ a JavaScript API can be utilized withoutdeparting from the spirit and scope of the claimed subject matter.

Integration Through Browser Menu Selections

In one or more embodiments, web applications can be integrated via a webbrowser's menu selections. As an example, consider FIG. 17. There, aclient desktop is shown generally at 1700. A web browser window 1702includes an address bar 1704 with a URL displayed. In addition, desktop1700 includes a task bar 1706. A browser menu item 1708 in the form of apage menu is shown. By dropping down the page menu to expose menuselections 1710, a menu item or selection “Add to Start Menu” isdisplayed. By selecting this option, a website or web application can beadded to the desktop's start menu and the installation process can beinitiated as described above. Alternately or additionally, an “Add toTask Bar” menu item or selection can be displayed to enable initiationof the installation process.

FIG. 18 is a flow diagram that describes steps in an installation methodin accordance with one or more embodiments. The method can be performedby any suitable hardware, software, firmware, or combination thereof. Inat least some embodiments, aspects of the method are performed bysoftware executing on a client.

Step 1800 receives a browser menu selection. The step can be performedin any suitable way. In the embodiment described just above, this stepis performed when a user navigates to a particular website, drops down abrowser menu to expose menu selections, and then takes an action byselecting a menu item associated with initiating installation of a webapplication associated with the website.

Step 1802 creates a web application file responsive to receiving thebrowser menu selection. In the illustrated and described embodiment, theweb application file that is initially created is an artifact or shellthat does not yet contain information from the associated web site suchas jumplist tasks, start URLs, favicons and the like. These can be addedlater through new markup and/or JavaScript APIs as described above. Itis to be appreciated and understood that techniques other than thosethat employ a JavaScript API can be utilized without departing from thespirit and scope of the claimed subject matter.

Integration Through Associated Website

In one or more embodiments, integration of a web application with adesktop can occur from a webpage. In these embodiments, a particularwebsite can opt into integration activities by using code, such asJavaScript, to integrate the web application into the desktop. Thisallows the website to be in control of integration initiationinstrumentalities.

As an example, consider FIG. 19. There, a client desktop is showngenerally at 1900. A web browser window 1902 includes an address bar1904 with a URL displayed therein. In addition, desktop 1900 includes atask bar 1906. Further, a webpage displayed within browser window 1902includes a link 1908 entitled “Add to Desktop”. By clicking on thislink, a user can initiate a web application installation process asdescribed above.

In at least some embodiments, after link selection takes place, a modalconfirmation dialog can be presented that explains the user action thatthe user is taking and where to access their newly-created shortcut.This confirmation dialog can present, to the user, the source URL of thepage that is being presented. The URL that is displayed can contain thefull path of the website. This can allow the user to verify that thewebsite they wish to install is being served from the correct site. Thiscan mitigate situations associated with malicious subdirectories.

In various implementations, the URL of the website that is to beintegrated with the desktop is checked to confirm that it is on the samedomain as the webpage that contains it. If not, an error can bedisplayed and the operation can fail. After the user confirms operation,the dialog can be removed and the web application window can bedisplayed with the correct URL.

FIG. 20 is a flow diagram that describes steps in an installation methodin accordance with one or more embodiments. The method can be performedby any suitable hardware, software, firmware, or combination thereof. Inat least some embodiments, aspects of the method are performed bysoftware executing on a client.

Step 2000 displays a webpage with an integration link. The step can beperformed in any suitable way, an example of which is provided above.Step 2002 receives a selection of the integration link. Step 2004creates a web application file responsive to receiving the linkselection. In the illustrated and described embodiment, the webapplication file that is initially created is an artifact or shell thatdoes not yet contain information from the associated web site such asjumplist tasks, start URLs, favicons and the like. These can be addedlater through new markup and/or JavaScript APIs as described above. Itis to be appreciated and understood that techniques other than thosethat employ a JavaScript API can be utilized without departing from thespirit and scope of the claimed subject matter.

In at least some embodiments, a visual representation of multiplewindows or tabs associated with a web application can be provided forthe user. As an example, consider FIG. 21. There, a desktop 2100includes a task bar 2102 having a web application icon pinned thereon. Acursor has been used to launch the web application by clicking on theicon. Assume, in this example, a user has navigated to multiple pagesusing the web application's starting page. The web application canenable a visualization that shows a collection 2104 of web pages towhich the user has navigated. Specifically, in this example, collection2104 includes a starting page 2106 for the web application, andsubsequent pages 2108 and 2110 to which the user has navigated from thestarting page.

Having considered various web application integration techniques,consider now a discussion of how user credentials can be associated withlogin sessions for a web application.

Associating Credentials and Login Sessions

Various embodiments enable one or more web applications that areassociated with websites that utilize login or credential information tobe integrated in a manner that preserves login or credential informationacross different instances of a web application.

When a browser navigates to a website that utilizes login or credentialinformation, the login or credential information can be manually enteredor retrieved from a credentials store. The credentials store can containuser login information such as, by way of example and not limitation, ausername and password or a user's credentials for a particular URL. Thesame URL or website may have multiple entries, each associated with adifferent user. Similarly, the credentials store can contain user logininformation or credentials for multiple URLs.

In at least some embodiments, a web application associated with awebsite that a user is logged into can be integrated on the desktop andinteracted with as described above. When such a web application isintegrated, a process determines what website the web application isassociated with, as well as the user who is logged onto the website. Theprocess searches the credentials store for associated login informationand/or credentials. The process can then create an association betweenthe user, the created web application, and the relevant credentials.

As an example, consider FIG. 22, which illustrates a relationshipbetween a website, a credentials store and a web application inaccordance with one or more embodiments. Browser 2200 displays a websitethat utilizes login information. In addition to displaying a URL, anicon 2210 is displayed which can be selected to facilitate theintegration of a web application as described above. Credentials store2220 includes entries that contain login information for multiplewebsites. One such entry is shown at 2230. Here, the entry includes awebsite URL, a user name, and a password. While FIG. 22 shows the logininformation as including a user name and password, it is to beappreciated and understood that other forms of login information orcredentials can be employed.

In one or more embodiments, icon 2210 can be selected and dragged anddropped onto task bar 2235, as described above and shown by icon 2240.This procedure initiates the integration of the web applicationassociated with the website. After the selection is received, a processdetermines which user is currently logged onto the web site and searchescredentials store 2220 for associated credentials. It is to beappreciated and understood, however, that associated credentials can bedetermined and/or obtained in other ways without departing from thespirit of the claimed subject matter.

Upon obtaining the user's credentials and/or login information, anassociation is made between the credentials and the web application in aweb application credentials store 2250. Web application credentialsstore 2250 can contain one or more entries containing data relevant tothe association between websites, web applications and pertinentcredentials.

For example, FIG. 22 illustrates an entry 2260 which is shown ascontaining login information pertaining to website “a.com” for userjsmith. In addition to the URL, username, and password information,entry 2260 also includes an Application ID or “AppID” which can be usedto associate the web application with the corresponding credentials. Webapplication credentials store 2250 also contains a second entry 2270 forthe same website “a.com” but a different user, bsmith. This mechanismallows for associating individual web applications from the same websitewith different users and their associated credentials.

While not illustrated in FIG. 22, various forms of user logininformation and/or credentials can be associated with a web application.For example, in one embodiment, an association can contain a pointer orreference back to information in credentials store 2220. In anotherembodiment, web application credentials store 2250 can includeinformation copied from the credentials store. In yet anotherembodiment, credentials separate from, or in addition to, usernames andpasswords can be associated with a web application. For example,biometric information might form the basis of an association that iscreated in the web application credentials store.

Having described the relationship between a website, a credentials storeand a web application, consider now how a web application can beintegrated for a website that employs associated credentials.

Creating and Launching a Web Application with Associated Credentials

FIG. 23 illustrates a flow diagram that describes steps in a method inaccordance with one or more embodiments. The method can be performed byany suitable hardware, software, firmware, or combination thereof. In atleast some embodiments, aspects of the method are performed by softwareexecuting on a client.

Step 2300 receives a selection of a website integration feature.Examples of how this can be done are provided above. As described above,the website integration feature is associated with installation of a webapplication on a client's desktop. Responsive to receiving selection ofthe website integration feature, step 2302 initiates an installationprocess to install a web application on a client's desktop, as describedabove. Specifically, initiation of this process on the client caninclude creating the web application file as described above. Step 2304obtains session information associated with a current web sessionassociated with the website. This step can be performed in any suitableway. For example, in one embodiment, session information can be obtainedusing a shared memory component between a browser rendering contentassociated with the website and the installation process. In anotherembodiment, a website can automatically forward session informationafter the website integration feature is selected. In yet anotherembodiment, session information can be stored by a browser andsubsequently queried.

Responsive to obtaining session information, step 2306 obtainscredentials related to the session information. In one embodiment, acredentials store can be queried for login and/or credentials related toa website into which the user is logged. For example, a credentialsstore can be queried for a username and password associated with thewebsite and user of the current session. Step 2308 associatescredentials and/or login information related to the session informationwith a web application. This step can be performed in any suitable way.For example, the credentials can be copied to a web applicationcredentials store for future reference. Alternately or additionally, apointer or reference to the credentials in a credentials store can beplaced in the web application credentials store. An identificationnumber can be generated based at least in part upon session informationand/or credentials to create a unique ID for each instance of a webapplication and the related credentials and/or login information. Thisinformation can be added to the web application credentials store entryto associate the acquired credentials and/or login information with aweb application. It is to be appreciated and understood, however, thatany suitable technique can be employed to associate credentials with aweb application without departing from the spirit and scope of theclaimed subject matter.

As described above, a unique ID for each web application instance allowsfor multiple instances of web applications to be associated with thesame URL or web site, with each instance being associated with differentuser credentials.

FIG. 24 is a flow diagram that describes steps in a method in accordancewith one or more embodiments. The method can be performed by anysuitable hardware, software, firmware, or combination thereof. In atleast some embodiments, aspects of the method are performed by softwareexecuting on a client.

Step 2400 receives selection of a web application to launch. This stepcan be performed in any suitable way. For example, an icon selection canbe made from a task bar on which the icon is pinned, as described above.Alternately or additionally, a selection from a desktop start menu or asystem tool bar can be made. Upon receiving selection of the webapplication to launch, step 2402 retrieves credentials associated withthe web application. For example, in one or more embodiments, an AppIDcan be used to reference a web application credentials store to retrievelogin information for a user who is currently logged in. Step 2404retrieves a URL and/or a FormID associated with the web application andrelated credentials. Upon acquiring the information described in steps2402 and 2404, step 2406 autonomously logs into the associated websitewithout user intervention. After logging into the website, step 2408navigates to the start URL, as previously described above.

Having described how a web application associated with credentials isintegrated and launched, consider now a discussion of multiple instancesof web applications with associated credentials.

Multiple Instances of Web Applications with Associated Credentials

FIG. 25 illustrates an example of multiple web application instancesthat are associated with credentials. Web application credentials store2500 includes data pertaining to a web application and associatedcredentials for a website. Included in the web application credentialsstore 2500 are entries 2510 and 2520, each for a different user. Asillustrated in FIG. 25, entry 2510 pertains to website “a.com”, andcontains additional information, such as user name jsmith and passwordbulldogs, which are used to log onto the associated website. Entry 2510includes an AppID, which is used to associate the entry with webapplication 2530. Entry 2520 also pertains to website “a.com”, butcontains login information for user bsmith, and is associated with webapplication 2540. While FIG. 25 illustrates an entry to contain aURL/FormID, username, password, and AppID, it is to be appreciated andunderstood that different forms of associations and credentialinformation can be used without departing from the spirit of the claimedsubject matter. Thus, two or more data entries in the web applicationcredentials store can contain data identifying different webapplications that are integrated on the client's desktop and each havedifferent user credentials that are associated with the same website.

In one or more embodiments, one or more web applications that areassociated with the same web site can exist or be activatedsimultaneously. For example, a software module can be configured toenable a web application to be launched via a desktop tool bar and touse the associated credentials to automatically log the associated userinto the website when the web application is launched. In addition tolaunching a single web application, the software module can beconfigured to enable a second web application to be launched usingdifferent user credentials for either the same website, or a differentwebsite when the second web application is selected to be launched.

For example, the two web applications 2530, 2540 of FIG. 25 areactivated at the same time. As described above, each pertains to website“a.com”, but has different credentials associated with them. As webapplication 2530 is selected and launched, it automatically logs ontowebsite “a.com” using credentials associated with user jsmith.Similarly, when web application 2540 is selected and launched, it logsonto website “a.com” using credentials associated with user bsmith.Thus, multiple instances of web applications associated with the samewebsite can be simultaneously activated and associated with differentcredentials.

Having described the notion of creating and launching a web applicationwith associated credentials, consider now a discussion of webapplication task sessions.

Web Application Task Sessions

In one or more embodiments, task sessions can be created to enable stateinformation associated with a web application to be saved to the system.State information can include, by way of example and not limitation,session cookies, JavaScript state, DOM state, form state, tab and windowpositioning, window sizes, URLs, history and the like.

Because state information associated with a particular task session issaved, a web application can be closed and later re-opened to restore orre-hydrate the state information for the web application. Stateinformation can be saved either automatically or through a manualselection process.

As an example, consider FIG. 26. There, a desktop 2600 includes a webapplication window 2602 that is being utilized to plan a trip. Desktop2600 also includes a task bar 2604 and a jumplist 2606. A webapplication directory 2608 provides a storage facility that can beutilized to store task session state information. In the illustrated anddescribed embodiment, the web application directory 2608 is created inthe system's user space. In this example, the user has two task sessionsthat have been saved—one associated with a Puerto Rico trip and oneassociated with an Alaska trip.

In operation, when a user interacts with a web application, the user canelect, through any suitable instrumentality, to create and save a tasksession. In the illustrated example, jumplist 2606 has a menu item“Tasks” that includes two entries. The first entry “New Task Session”enables the user to create a new task session. The second entry “SaveCurrent Task” enables the user to save the current task. By saving thecurrent task, state information associated with the task is persisted tothe web application directory 2608. A menu item entitled “Open TaskSessions” contains entries that enable a user to restore or re-hydrateprevious task sessions that have been persisted to the web applicationdirectory 2608. Here there are the two previously-mentioned,previously-saved task sessions—Puerto Rico trip and Alaska trip.

As noted from the above example, multiple task sessions can be createdand saved for individual web applications. When a task session is saved,an application ID associated with the web application can be saved withthe task session. The application ID can then be used to determine whichweb application is to consume the information associated with the savedtask session.

Any suitable techniques and approaches can be utilized to enable tasksessions to be created and saved. In at least some embodiments, thesystem can leverage or otherwise utilize a crash recovery systemassociated with the system's web browser. In this instance, crashrecovery functionality can be triggered when, for example, a user electsto save a current task or to create a new task session. The crashrecovery functionality can create an “appdata” file that resides in theuser's application data directory and which can be used to save theinformation associated with the task session. Specific operation ofcrash recovery systems will be understood by those of skill in the art.Accordingly, for the sake of brevity, such systems are not describedherein.

FIG. 27 is a flow diagram that describes steps in a method for savingtask session state information in accordance with one or moreembodiments. The steps can be executed in connection with any suitablehardware, software, firmware, or combination thereof. In at least someembodiments, the method can be performed by software executing on aclient in association with software executing on a server.

Step 2700 receives input associated with saving task session stateinformation. Any suitable input can be received. For example, thereceived input can comprise input received from a user. Alternately oradditionally, the input can comprise some type of automatic,programmatic input. In at least some embodiments, the user input can bereceived via a jumplist. Alternately or additionally, the user input canbe received via a shortcut. In the illustrated and described embodiment,the user input indicates that a user wishes to save task session stateinformation associated with a web application. Step 2702 creates orotherwise accesses a task session data structure in a web applicationdirectory. The task session data structure is utilized to save tasksession state information. Step 2704 saves task session stateinformation in the data structure. This step can be performed in anysuitable way. For example, this step can be performed when a user electsto save the task session state information. Alternately or additionally,this step can be performed periodically during a user's interaction withthe web application. In at least some embodiments, steps 2702 and 2704can be performed by utilizing a web browser's crash recovery system. Itis to be appreciated and understood, however, that other techniques canbe utilized without departing from the spirit and scope of the claimedsubject matter.

FIG. 28 is a flow diagram that describes steps in a method for restoringa task session whose state information has been saved, in accordancewith one or more embodiments. The steps can be executed in connectionwith any suitable hardware, software, firmware, or combination thereof.In at least some embodiments, the method can be performed by softwareexecuting on a client in association with software executing on aserver.

Step 2800 receives user input associated with restoring a task sessionwhose state information was previously saved. Step 2802 accesses a tasksession data structure in a web application directory. As noted above,the task session's state information is saved in the task session datastructure. Step 2804 retrieves the task session state information fromthe web application directory. Step 2806 launches an associated webapplication and restores the task session using the task session stateinformation retrieved from the web application directory.

Having described the notion of saving and re-using task session stateinformation, consider now how transitions can be performed between a webapplication and a browser.

Transitioning Between a Web Application and a Browser

In one or more embodiments, a web application can transition to abrowser experience to be able to leverage browser capabilities thatmight not be provided by a web application mode browser that enables theweb application. Recall that this is because in some embodiments, theweb application mode browser is a pared-down or chrome-less browser toenable developers to provide a more site-specific experience. Such othercapabilities that are excluded from the web application mode browser caninclude, for example, favorites, tool bars, and/or other add-ons.

In at least some embodiments, content and state associated withindividual tabs can be migrated from a web application to the webbrowser. Alternately or additionally, content and state associated withmultiple tabs and/or the whole content and state of the web applicationcan be migrated from the web application to the web browser. Alternatelyor additionally, sessions associated with individual tabs can bemigrated from the web application to the browser.

Consider a situation in which a user has started a web application fromtheir desktop, has navigated within it, and opens one or more links in anew tab. As an example, consider FIG. 29. There, a desktop 2900 includesa web application window 2902 comprising part of a web application thatis being utilized to plan a trip. Desktop 2900 also includes a task bar2904 from which the web application was launched, as by clicking on anassociated icon that has been pinned to the task bar. The webapplication window 2902 includes three tabs 2906, 2908, and 2910. Inthis instance, the user has selected tab 2906 and has a link “Click hereto search for flights” that the user can open.

Assume now that the user clicks on the associated link to open it and,upon opening the link, decides that she would like to create a favoritesitem for the website that is displayed in tab 2906. In this instance,the user can open a tool menu 2912, or use some other user interfaceinstrumentality, and select an option to open the tab's contents in anassociated web browser. As an example, consider FIG. 30 which uses likenumbers from FIG. 29.

There, tool menu 2912 has been opened to expose its contents 3000. Inthis example, two selections are available for the user—“Open Tab inBrowser . . . ” and “Open WebApp Content in Browser . . . ”. The firstselection enables a user to open the content of a selected tab in a webbrowser. When the selected tab is opened in the web browser, the tab'scontent and state are migrated to the web browser. The web browser canbe one that has an open instance or, alternately, one that is launched.The second selection enables the user to open the whole content of theweb application in the web browser. When this is done, the webapplication's content and state are migrated to the web browser.

Any suitable techniques can be utilized to migrate content and statefrom a web application tab or web application to the web browser. In atleast some embodiments, migration occurs through the use of the webbrowser's crash recovery system, such as that described above.Specifically, when a user indicates a desire to migrate content andstate from a web application to a web browser, content and state can bewritten to the system's disk, e.g. by writing an appdata file thatincludes the relevant data that is to be migrated.

In addition, in at least some instances, shared memory can be utilizedto migrate information or data that is not typically utilized by the webbrowser's crash recovery system. For example, data such as credentialsand session cookies can be stored in shared memory and the shared memorycan be utilized to enable such data to be used by the web browser.

Once the user selects a particular option displayed in the tool menu2912, the information or data can be migrated to a current or newinstance of a web browser, and the associated tab in the web applicationwindow 2902 can be closed. In one or more embodiments, if the tab fromwhich the information or data is being migrated is the only tab open inthe web application, the web application can be closed after themigration is complete.

The above-described approach works well when the web application and theweb browser execute in different processes across a process boundary.That is, the migration using the crash recovery system and the sharedmemory is well-suited for crossing process boundaries. In someinstances, however, process boundaries need not necessarily be crossed.Rather, the web application and subsequent web browser functionality canbe exposed from within the same process. Specifically, in this instance,a web browser user interface can be instantiated and used, in connectionwith web application window 2902, and functionality that is notavailable through the web application mode browser can be turned on andmade accessible through the web browser user interface. In operation,one way of implementing this is as follows. The web application firstgenerates some crash recovery files. A new browser is initiated andloads crash recovery information from the crash recovery files. Thisinformation is then used to configure the state of the new browser. Whenthe user works within the new browser, he or she will have access to allof the browser functionality via the browser's standard user interface.

FIG. 31 illustrates an embodiment in which the user has elected tomigrate content and state associated with a tab to a new browserinstance. Like numbers from the FIG. 29 example have been utilized.Here, assume that a user has selected the “Open Tab in Browser” menuselection for tab 2906 (FIG. 30). Responsively, that tab's content andstate are migrated to a new instance of a web browser whose associateduser interface window is shown at 3100. User interface window 3100includes an address bar 3102 and a tab 3104 associated with the tab thathas been migrated from the web application. Notice in this example, thattab 2906 (FIG. 30) has been closed in the web application window 2902but because multiple tabs are open, the web application remains open.

FIG. 32 is a flow diagram that describes steps in a method in accordancewith one or more embodiments. The steps can be executed in connectionwith any suitable hardware, software, firmware, or combination thereof.In at least some embodiments, the method can be performed by softwareexecuting on a client in association with software executing on aserver.

Step 3200 receives user input associated with migrating web applicationcontent and/or state to a web browser. Any suitable input can bereceived. For example, in at least some embodiments, input can bereceived through a tool menu that is exposed by the web application.Step 3202 migrates web application content and/or state to the webbrowser. Any suitable techniques can be utilized to migrate the webapplication content and/or state. In addition, content and/or state atany suitable level of granularity can be migrated. For example, contentand/or state associated with individual tabs or multiple tabs of the webapplication can be migrated. Alternately or additionally, the entirecontent of the web application can be migrated. Further, in at leastembodiments migration can occur across process boundaries. Alternatelyor additionally, migration can occur within the same process.

FIG. 33 is a flow diagram that describes steps in a method in accordancewith one or more embodiments. The steps can be executed in connectionwith any suitable hardware, software, firmware, or combination thereof.In at least some embodiments, the method can be performed by softwareexecuting on a client in association with software executing on aserver.

Step 3300 receives user input associated with migrating web applicationcontent and/or state to a web browser. Any suitable input can bereceived. For example, in at least some embodiments, input can bereceived through a tool menu that is exposed by the web application.Step 3302 instantiates a web browser user interface. Step 3304 exposesfunctionality using the web browser user interface. Exposing thefunctionality includes enabling interaction with the web applicationcontent through the web browser user interface. In at least someembodiments, the exposed functionality includes functionality that isnot available through the web application or the web application modebrowser and which can be used to interact with the web applicationcontent. Examples of such functionality are provided above. The methodof FIG. 33 can be useful in situations where migration of webapplication content and/or state occurs within the same process.

FIG. 34 is a flow diagram that describes steps in a method in accordancewith one or more embodiments. The steps can be executed in connectionwith any suitable hardware, software, firmware, or combination thereof.In at least some embodiments, the method can be performed by softwareexecuting on a client in association with software executing on aserver.

Step 3400 receives user input associated with migrating web applicationcontent and/or state to a web browser. Any suitable input can bereceived. For example, in at least some embodiments, input can bereceived through a tool menu that is exposed by the web application.Step 3402 saves data associated with the web application content. Thisstep can be performed in any suitable way. For example, in at least someembodiments, at least some of the data can be written to the system'sdisk. Any suitable techniques can be utilized to write the data to thesystem's disk. For example, in at least some embodiments, a webbrowser's crash recovery system can be utilized to write the data to thesystem's disk. Further, in at least some embodiments, step 3402 can beperformed by using shared memory that is shared between the webapplication and a web browser.

Step 3404 ascertains whether a web browser is open. If a web browser isopen, then step 3406 uses the saved data to present the web applicationcontent in the web browser. If, on the other hand, the web browser isnot open, step 3408 launches the web browser and returns to step 3406 touse the saved data to present the web application content.

Creating a Transient Web Application from a Browser

Various embodiments enable creation of one or more so-called transientweb applications. In at least some embodiments, a transient webapplication can be created without pinning the transient web applicationto a taskbar or otherwise integrating the transient web application'sassociated files or indicia to a client's desktop as described above.For example, the transient web application may not have any userinterface instrumentality integrated on the client's desktop thatprovides a way to enable it to be launched or re-launched, such as ashortcut on a start menu, a shortcut icon on the client's taskbar, andthe like. In such instances, however, a user can launch the transientweb application from its associated web site and can have access to thesame functionality provided by the web application had it been installedor integrated as described above. After using the transient webapplication, it can then be closed by the user. In at least someembodiments, once a transient web application has been closed, a user nolonger has access to that particular instance of the web application,thus rendering the transient web application un-relaunchable from theclient's desktop tool bar or start menu. One way to do this is to deletethe files or processes that were created for the web application whenthe user initially launched it from the associated web site. In someembodiments, a transient web application can be converted to aninstalled web application, thus providing future access to the webapplication from the client's desktop.

As an example, consider FIG. 35, which illustrates a relationshipbetween a transient web application and a browser. Here, browser 3500enables access to multiple web pages through a tabbed system, where tab3510 is associated with web site “Any Search Page” and tab 3520 isassociated with “A Second Open Page”. In one or more embodiments, atransient web application can be created from open web pages. In FIG.35, a transient web application 3530 is generated or created by a userselecting tab 3510 and dragging and dropping the selection outside ofbrowser 3500 on the desktop. When this happens, transient webapplication files can be created in a temporary location.

It is to be appreciated and understood, however, that transient webapplications can be generated in other ways without departing from thespirit and scope of the claimed subject matter. For example, browser3500 can have a pull down menu to facilitate selection of a web page andsubsequent generation of an associated transient web application.

In the context of this document, transient web applications are webapplications that are not installed on a client's system in the way thathas been described above in this document. However, web sites can stillexecute and provide access to the same functionality in a transient webapplication that can be executed in an installed web application. Forexample, a web site can modify a transient web application's independentjumplist, set and clear overlay icons, and the like. Alternately oradditionally, a transient web application can support the same behavioras an installed web application, such as providing independentcollections of tabs or windows that are opened from within the transientweb application, as described above.

FIG. 36 illustrates a flow diagram that describes steps in a method inaccordance with one or more embodiments. The method can be implementedin connection with any suitable hardware, software, firmware, orcombination thereof. In at least some embodiments, aspects of the methodcan be implemented by a suitably configured web browser and/or asoftware module on a client device, such as in FIG. 1.

Step 3600 receives selection of a web site from which a web applicationcan be acquired. This can be accomplished in any suitable way, such asthrough selection of a tab on a tabbed web browser, through a pull-downmenu, and the like. Upon receiving selection of a web site, step 3602receives input to create a web application as a transient webapplication on a client device. In one or more embodiments, this caninclude receiving a message or call containing a request or otherinformation that can be used to generate a web application. In otherembodiments, this can include receiving input generated from a userdragging and dropping some indicia associated with a web site. Step 3604creates a transient web application that is associated with the selectedweb site. In some embodiments, creating a transient web applicationgenerates web application files and/or processes without integratingthem or any associated indicia on a client's desktop or start menu. Forexample, the associated files can be saved in a temporary file locationthat is different from locations in which integrated web applicationfiles are placed. In addition, in at least some embodiments, creation ofthe transient web application can include transferring the web site'sstate from the browser to the transient web application.

FIG. 37 illustrates a flow diagram that describes steps in a method inaccordance with one or more embodiments. The method can be implementedin connection with any suitable hardware, software, firmware, orcombination thereof. In at least some embodiments, aspects of the methodcan be implemented by a suitably configured web browser and/or asoftware module, such as in FIG. 1.

Step 3700 receives input to close a transient web application. This stepcan be performed in any suitable way. For example, in one embodiment,this can include receiving input from a user selecting a close button onan open transient web application. In another embodiment, this caninclude receiving input based on a user selecting a close option on atransient web application pull-down menu. Upon receipt of the input toclose a transient web application, step 3702 closes the transient webapplication. Closing a transient web application can include deleting orremoving the transient web application's associated files and processes.Thus, upon closing the transient web application, a user no longer hasaccess to its functionality without either accessing it again asdescribed above, or installing it as a non-transient web application,described just below.

Having described creation and deletion of a transient web application,consider now how a transient web application can be converted into apinned or installed web application in accordance with one or moreembodiments.

Converting a Transient Web Application to an Installed Web Application

In one or more embodiments, a transient web application can be convertedto an installed or integrated web application to allow for persistentaccess after the web application has been closed. Once converted, thetransient web application can be considered as a non-transient webapplication.

FIG. 38 illustrates a transient web application that includes ajumplist. Taskbar 3800 shows multiple programs that are open and runningon a client device. Transient web application 3810 is a web applicationthat originated from program 3840. Associated with transient webapplication 3810 is a jumplist 3820. As in the case of an installed orintegrated web application, jumplist 3820 has all the potentialfunctionality associated with an installed web application. In addition,jumplist 3820 contains item 3830 entitled “Pin this program to taskbar”.Selecting this option pins the web application to the client's taskbar,thus installing it and the associated user interface instrumentality onthe client's desktop as described above. This enables the nownon-transient web application to be re-launched from the desktop. It isto be appreciated and understood, however, that any suitable techniquecan be employed to convert a transient web application to anon-transient web application without departing from the spirit andscope of the claimed subject matter. For example, in some embodiments, atransient web application can be added to a start menu of a client'sdesktop to integrate and install the web application. In anotherembodiment, a transient web application may have a pull down menu withan option to initiate the installation process. Needless to say,numerous ways can be utilized to convert a transient web applicationinto a non-transient web application.

Web Application Super Home Button

When interacting with a web application, it is possible for a user tonavigate to a domain other than one directly associated with the websitewith which the web application is associated. For example, a user mayinitiate an e-mail web application and, by following external links,arrive at another site such as a news, shopping, or entertainment site.

In one or more embodiments, a web application home button is provided aspart of the user interface experience. The web application home buttonserves the couple purposes. First, the web application home buttonindicates that the purpose of a particular web application mode browser(also referred to as a “site mode browser”) instance is for anassociated web application. The web application home button can usebranding and other visual instrumentalities to convey this information.Second, the web application home button enables users to quickly andeasily start back to the beginning of their web application experienceby simply clicking on the web application home button to access thestart URL. This alleviates having to close and re-launch a particularweb application in order access the start URL for the associatedwebsite. In at least some embodiments, by default, the value associatedwith the start URL is ascertained from the page from which the userdrags and drops the favicon on the taskbar. Alternatively, webdevelopers can define an HTML tag that describes the start URL as partof their page. This allows them to define an alternate start URL that isnot the same as the page they are currently viewing.

As an example, consider FIG. 39. There, a web application mode browser3900 includes an address bar 3902 in which an URL for a website appears.In addition, a web application home button 3904 appears adjacent theback and forward navigation buttons. As the user navigates to domainsoutside of the website associated with the web application, they can, atany time, simply click on the web application home button 3904 tonavigate to the website's start URL as described in the web applicationfile.

Further, in at least some embodiments, and in order to convey to theuser their context within a web application and not a default browser,the navigational back and forward buttons can take on the identity ofthe website by utilizing or extracting a primary color of the site'sbrand through the web application home button. In addition, an HTML tagcan be utilized to enable websites to specify the color of these buttonsas part of their HTML page.

FIG. 40 is a flow diagram that describes steps a method in accordancewith one or more embodiments. The method can be implemented inconnection with any suitable hardware, software, firmware, orcombination thereof. In at least some embodiments, the method can beimplemented by a site mode browser such as that described above.

Step 4000 navigates a site mode browser to a website start URLassociated with a web application that is installed on a client device.This step can be performed in any suitable way, examples of which areprovided above. Step 4002 navigates to a different webpage. The webpagemay or may not be associated with the website associated with the startURL. Step 4004 receives selection of a web application home button.Responsive to receiving selection of the web application home button,step 4006 navigates the site mode browser to the website start URL.

Example System

FIG. 41 illustrates an example computing device 4100 that can be used toimplement the various embodiments described above. Computing device 4100can be, for example, computing device 102 of FIG. 1 or any othersuitable computing device.

Computing device 4100 includes one or more processors or processingunits 4102, one or more memory and/or storage components 4104, one ormore input/output (I/O) devices 4106, and a bus 4108 that allows thevarious components and devices to communicate with one another. Bus 4108represents one or more of any of several types of bus structures,including a memory bus or memory controller, a peripheral bus, anaccelerated graphics port, and a processor or local bus using any of avariety of bus architectures. Bus 4108 can include wired and/or wirelessbuses.

Memory/storage component 4104 represents one or more computer storagemedia. Component 4104 can include volatile media (such as random accessmemory (RAM)) and/or nonvolatile media (such as read only memory (ROM),Flash memory, optical disks, magnetic disks, and so forth). Component4104 can include fixed media (e.g., RAM, ROM, a fixed hard drive, etc.)as well as removable media (e.g., a Flash memory drive, a removable harddrive, an optical disk, and so forth).

One or more input/output devices 4106 allow a user to enter commands andinformation to computing device 4100, and also allow information to bepresented to the user and/or other components or devices. Examples ofinput devices include a keyboard, a cursor control device (e.g., amouse), a microphone, a scanner, and so forth. Examples of outputdevices include a display device (e.g., a monitor or projector),speakers, a printer, a network card, and so forth.

Various techniques may be described herein in the general context ofsoftware or program modules. Generally, software includes routines,programs, objects, components, data structures, and so forth thatperform particular tasks or implement particular abstract data types. Animplementation of these modules and techniques may be stored on ortransmitted across some form of computer readable media. Computerreadable media can be any available medium or media that can be accessedby a computing device. By way of example, and not limitation, computerreadable media may comprise “computer-readable storage media”.

“Computer-readable storage media” include volatile and non-volatile,removable and non-removable media implemented in any method ortechnology for storage of information such as computer readableinstructions, data structures, program modules, or other data.Computer-readable storage media include, but are not limited to, RAM,ROM, EEPROM, flash memory or other memory technology, CD-ROM, digitalversatile disks (DVD) or other optical storage, magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,or any other medium which can be used to store the desired informationand which can be accessed by a computer.

CONCLUSION

Various embodiments provide a mechanism to allow end users to installweb applications and websites onto their desktop. In accordance with oneor more embodiments, client-side code can be utilized to allowdevelopers associated with a website to define boundaries associatedwith user interaction, and have those boundaries enforced by a run-timeengine. In at least some embodiments, developers can provide, throughJavaScript code, various configurations for the creation of a start menushortcut, navigation, and so-called jumplist integration, as well as avariety of other functionality.

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

1. A computer-implemented method, comprising: navigating a webapplication mode browser to a start page; navigating the web applicationmode browser to a webpage other than one associated with the start page;receiving selection of a web application home button; and responsive toreceiving selection of the web application home button, navigating theweb application mode browser to the start page.
 2. The method of claim1, wherein the web application home button is configured to enablebranding.
 3. The method of claim 1, wherein the web application homebutton is configured to enable branding using a primary color.
 4. Themethod of claim 1, wherein the web application home button is configuredto be displayed adjacent navigation buttons associated with the webapplication mode browser.
 5. The method of claim 1, wherein the webapplication home button is configured to be displayed adjacentnavigation buttons associated with the web application mode browser,wherein the navigation buttons utilize a primary color associated with awebsite with which the start page is associated.
 6. The method of claim1, wherein the web application home button is configured to be displayedadjacent back and forward navigation buttons associated with the webapplication mode browser.
 7. The method of claim 1, wherein the websitestart page is ascertained from HTML.
 8. A computing device having storedcomputer-executable instructions that when executed perform operationscomprising: navigating a web application mode browser to a start page;navigating the web application mode browser to a webpage other than oneassociated with the start page; receiving selection of a web applicationhome button; and responsive to receiving selection of the webapplication home button, navigating the web application mode browser tothe start page.
 9. The computing device of claim 8, wherein the webapplication home button is configured to enable branding.
 10. Thecomputing device of claim 8, wherein the web application home button isconfigured to enable branding using a primary color.
 11. The computingdevice of claim 8, wherein the web application home button is configuredto be displayed adjacent navigation buttons associated with the webapplication mode browser.
 12. The computing device of claim 8, whereinthe web application home button is configured to be displayed adjacentnavigation buttons associated with the web application mode browser,wherein the navigation buttons utilize a primary color associated with awebsite with which the start page is associated.
 13. The computingdevice of claim 8, wherein the web application home button is configuredto be displayed adjacent back and forward navigation buttons associatedwith the web application mode browser.
 14. The computing device of claim8, wherein the website start page is ascertained from HTML.
 15. One ormore computer-readable storage memory devices embodyingcomputer-executable instructions, which, when executed, implement a webapplication mode browser comprising: one or more navigation buttons; anda web application home button, wherein the web application home buttonis associated with a client-installable web application and enablesnavigation to a start page associated with a website associated with theweb application.
 16. The one or more computer-readable storage memorydevices of claim 15, wherein the web application home button isconfigured to enable branding.
 17. The one or more computer-readablestorage memory devices of claim 15, wherein the web application homebutton is configured to enable branding using a primary color.
 18. Theone or more computer-readable storage memory devices of claim 15,wherein the web application home button is configured to be displayedadjacent the one or more navigation buttons, wherein the navigationbuttons are configured to utilize a primary color associated with thewebsite.
 19. The one or more computer-readable storage memory devices ofclaim 15, wherein the web application home button is configured to bedisplayed adjacent back and forward navigation buttons associated withthe web application mode browser.
 20. The one or more computer-readablestorage memory devices of claim 15, wherein the web application homebutton is configured to be displayed adjacent back and forwardnavigation buttons associated with the web application mode browser,wherein the navigation buttons are configured to utilize a primary colorassociated with the website.